import {fileURLToPath, URL} from 'node:url'
import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import {env} from "eslint-plugin-vue/lib/configs/base";
export default defineConfig({
    base: './', // 设置打包路径
    plugins: [
        vue(), vueJsx()],
    resolve: {
        alias: {
            '@': fileURLToPath(new URL('./src', import.meta.url))
        }
    },
    css: {
        // css预处理器
        preprocessorOptions: {
            scss: {
                // 给导入的路径最后加上 ;
                additionalData: '@import "@/assets/style/mixin.scss";'
            }
        }
    },
    server: {
        port: 8080,
        // open: true,
        host: '0.0.0.0',
        proxy: {
            '/api': {
                target: 'http://localhost:3000',
                changeOrigin: true,
                rewrite: (path) => path.replace(/^\/api/, '')// 将匹配到的api替换成''
            }
        }
    },
    build: {
        outDir: 'dist', // 指定打包路径，默认为项目根目录下的 dist 目录
        sourcemap: env.VITE_BUILD_SOURCEMAP === 'true',
        // minify默认esbuild，esbuild模式下terserOptions将失效
        // vite3变化：Terser 现在是一个可选依赖，如果你使用的是 build.minify: 'terser'，你需要手动安装它 `npm add -D terser`
        minify: 'terser',
        terserOptions: {
            compress: {
                keep_infinity: true, // 防止 Infinity 被压缩成 1/0，这可能会导致 Chrome 上的性能问题
                drop_console: env.VITE_BUILD_DROP_CONSOLE === 'true', // 去除 console
                drop_debugger: true, // 去除 debugger
            },
        },
        chunkSizeWarningLimit: 1500, // chunk 大小警告的限制（以 kbs 为单位）
    },
})
